Face recognition requires the comparing of a face image to a database of images. Images are first trained to get n eigen faces which capture the maximum variation in the image database. These n eigen faces act as a basis for lower dimensional space. The images are then projected onto this lower dimensional space, where each image is represented as an n-dimensional feature vector. A query image is also projected onto this lower dimensional space and converted to an n-dimensional vector. A search for a matching image in the database is then performed by comparing the distances between the query image vector and the n-dimensional vectors representing the images in the database. Some existing approaches uses single-level clustering of the images in the database using probabilistic measures of similarity. However, when the image database is large, the computational costs for the search may be overly burdensome and scaling the clustering of the images in the database may be difficult.